import router from '@/router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth' // get token from cookie
import getPageTitle from '@/utils/get-page-title'

NProgress.configure({ showSpinner: false }) // 进度条初始配置
const whiteList = ['/login', '/OAuthSingleLogin'] // 不用验证的白名单
router.beforeEach(async(to, from, next) => {
  NProgress.start()
  document.title = getPageTitle(to.meta.title)
  // 确定用户是否已登录
  // app正式版不开启验证 测试版开启
  let info
  const hasToken = getToken()
  if (process.env.VUE_APP_IS_LOGIN_VERIFY === '1') {
    info = JSON.parse(localStorage.getItem('USERInfo'))
  } else {
    info = hasToken
  }
  if (info) {
    if (to.path === '/login') {
      next({ path: '/' })
      NProgress.done()
    } else {
      // 判断浏览器兼容
      if (navigator.userAgent.indexOf('MSIE') > -1) {
        // 跳转不兼容页面
      } else {
        const hasGetUserInfo = info.userId
        if (hasGetUserInfo) {
          next()
        } else {
          try {
            // 获取用户信息
            if (process.env.VUE_APP_IS_LOGIN_VERIFY == '1') {
              await store.dispatch('user/getInfo')
            }
            next()
          } catch (error) {
            // 删除存储的登录信息，重定向到登录页
            await store.dispatch('user/resetToken')
            Message.error(error || 'Has Error')
            // next(`/login`)
            NProgress.done()
          }
        }
      }
    }
  } else {
    // 没有登录信息
    if (whiteList.indexOf(to.path) !== -1) {
      // 在白名单中设置，直接进入
      next()
    } else {
      // 其他无权访问的页面将重定向到登录页面。
      next(`/login`)
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  const scrollElm = document.getElementById('app-main')
  if (scrollElm) {
    scrollElm.scrollTop = 0
  }
  // 关闭进度条
  NProgress.done()
})
